package com.bsfcs.rag.controller;

import com.bsfcs.rag.service.ContractDataQueryConfig;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;
import java.util.List;

@RestController
@RequestMapping("/contract-config")
public class ContractDataConfigController {
    
    private final ContractDataQueryConfig contractDataQueryConfig;
    
    public ContractDataConfigController(ContractDataQueryConfig contractDataQueryConfig) {
        this.contractDataQueryConfig = contractDataQueryConfig;
    }
    
    /**
     * 设置合同字段
     * @param fields 字段列表
     * @return 配置结果
     */
    @PostMapping("/contract-fields")
    public String setContractFields(@RequestBody List<String> fields) {
        contractDataQueryConfig.setContractFields(fields.toArray(new String[0]));
        return "合同字段配置成功: " + Arrays.toString(fields.toArray());
    }
    
    /**
     * 设置合同履行节点字段
     * @param fields 字段列表
     * @return 配置结果
     */
    @PostMapping("/contract-lxplan-fields")
    public String setContractLxPlanFields(@RequestBody List<String> fields) {
        contractDataQueryConfig.setContractLxPlanFields(fields.toArray(new String[0]));
        return "合同履行节点字段配置成功: " + Arrays.toString(fields.toArray());
    }
    
    /**
     * 设置付款记录字段
     * @param fields 字段列表
     * @return 配置结果
     */
    @PostMapping("/contract-paymoney-fields")
    public String setContractPaymoneyFields(@RequestBody List<String> fields) {
        contractDataQueryConfig.setContractPaymoneyFields(fields.toArray(new String[0]));
        return "付款记录字段配置成功: " + Arrays.toString(fields.toArray());
    }
    
    /**
     * 设置开票记录字段
     * @param fields 字段列表
     * @return 配置结果
     */
    @PostMapping("/invoice-fields")
    public String setInvoiceFields(@RequestBody List<String> fields) {
        contractDataQueryConfig.setInvoiceFields(fields.toArray(new String[0]));
        return "开票记录字段配置成功: " + Arrays.toString(fields.toArray());
    }
    
    /**
     * 设置进项发票记录字段
     * @param fields 字段列表
     * @return 配置结果
     */
    @PostMapping("/contract-jxfpdj-fields")
    public String setContractjxfpdjFields(@RequestBody List<String> fields) {
        contractDataQueryConfig.setContractjxfpdjFields(fields.toArray(new String[0]));
        return "进项发票记录字段配置成功: " + Arrays.toString(fields.toArray());
    }
    
    /**
     * 重置所有字段配置
     * @return 重置结果
     */
    @DeleteMapping("/reset")
    public String resetAll() {
        contractDataQueryConfig.resetAll();
        return "所有字段配置已重置为默认值";
    }
    
    /**
     * 恢复默认字段配置
     * @return 配置结果
     */
    @PostMapping("/default")
    public String setDefault() {
        contractDataQueryConfig.resetAll();
        return "字段配置已恢复为默认值";
    }
    
    /**
     * 获取当前配置
     * @return 当前配置信息
     */
    @GetMapping("/current-config")
    public ContractDataQueryConfig getCurrentConfig() {
        return contractDataQueryConfig;
    }
}